
/**
 * Wektor prędkości.
 * Parametrami wektora prędkości są zmiany poszczególnych składowych w jednostce czasu - sekundzie.
 */ 
class Velocity {
    public:
        Velocity();
        /**
         * Konstruktor przyjmujący zmiany prędkości.
         * Dla układu sferycznego: dAzimuth, dElevation, dRadial.
         * Dla układu kartezjańskiego dX, dY, dZ.
         */ 
        Velocity(double, double, double);
//        ~Velocity();
        /**
         * Gettery i settery kartezjańskich zmian predkości
         */ 
        double getDX();
        void setDX(double);
        double getDY();
        void setDY(double);
        double getDZ();
        void setDZ(double);
        /**
         * Gettery i settery współrzędnych sferycznych
         */ 
        double getDRadius();
        void setDRadius(double);
        double getDAzimuth();
        void setDAzimuth(double);
        double getDElevation();
        void setDElevation(double);

    private:
        /**
         * Metoda wywoływana po każdej zmianie prędkości kartezjańskich aktualizuje prędkości sferyczne
         */  
        void updateSphericalVelocities();
        /**
         * Metoda wywoływana po każdej zmianie prędkości sferycznych aktualizuje prędkości kartezjańskie
         */ 
        void updateCartesianVelocities();
        /**
         * Współrzędne kartezjańskie
         */ 
        double dX, dY, dZ;
        /**
         * Współrzędne sferyczne
         */ 
        double dAzimuth, dElevation, dRadius;
};
